package org.japo.java.basics.entities;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class Hora {

    //variable
    private int hora;
    private int minuto;
    private int segundo;

    //constructores
    public Hora() {
        establecerHoraSistema();
    }

    public Hora(int hora, int minuto, int segundo) {
        if (validarHora(hora, minuto, segundo)) {
            this.hora = hora;
            this.minuto = minuto;
            this.segundo = segundo;
        } else {
            establecerHoraSistema();
        }
    }

    public static boolean validarHora(int hora, int minuto, int segundo) {
        return hora >= 0 && hora <= 23
                && minuto >= 0 && minuto <= 59
                && segundo >= 0 && segundo <= 59;
    }

    public int getHora() {
        return hora;
    }

    public void setHora(int hora) {
        if (hora >= 0 && hora <= 23) {
            this.hora = hora;
        }
    }

    public int getMinuto() {
        return minuto;
    }

    public void setMinuto(int minuto) {
        if (minuto >= 0 && minuto <= 23) {
            this.minuto = minuto;
        }
    }

    public int getSegundo() {
        return segundo;
    }

    public void setSegundo(int segundo) {
        if (segundo >= 0 && segundo <= 23) {
            this.segundo = segundo;
        }
    }

    @Override
    public String toString() {
        return String.format("%02d:%02d:%02d", hora, minuto, segundo);
    }

    public void mostratHora() {
        System.out.println(toString());
    }

    private void establecerHoraSistema() {
        //instacia objeto Gregoriancalendar
        GregorianCalendar gc = new GregorianCalendar();

        //Obtener Hora
        hora = gc.get(Calendar.HOUR_OF_DAY);
        minuto = gc.get(Calendar.MINUTE);
        segundo = gc.get(Calendar.SECOND);
    }

}
